/*
	数组指针和二维数组
*/
#include <stdio.h>

int main(int argc,char* argv[]){
		int arr[2][3] = {11,22,33,44,55,66};
		int i = 0 , j = 0;
		for(i = 0;i < 2;i++){
			for(j = 0;j < 3;j++){
				printf("&arr[%d][%d]=%p \n",i,j,&arr[i][j]);	
				}
			}
	printf("============================================\n");
	printf("&arr[0] = %p \n",arr[0]);//表示第一行第一个元素的地址
	printf("&arr[0] = %p \n",&arr[0]);
	//表示第一整行的地址
	printf("arr = %p \n",arr);
	//表示整个二维数组的地址
	printf("&arr = %p \n",&arr);
	printf("============================================\n");
	printf("&arr[0] = %p \n",arr[0]+1);
	printf("&arr[0] = %p \n",&arr[0]+1);
	printf("arr = %p \n",arr+1);
	printf("&arr = %p \n",&arr+1);
	printf("============================================\n");
	//数组指针指向整个第一行的地址
	int (*pArr)[3] = arr;
	printf("pArr = %p \n",pArr);
	for(i = 0;i < 2;i++){
			for(j = 0;j < 3;j++){
					printf("pArr[%d][%d] = %d \n",i,j,pArr[i][j]);
					//printf("pArr[%d][%d] = %d \n",i,j,(*(*pArr+i))[j]);
					printf("pArr[%d][%d] = %d \n",i,j,*(*(pArr+i)+j));
				}
		}
	int (*ppArr)[2][3] = &arr;
	printf("ppArr = %p,*ppArr = %p \n",ppArr,*ppArr);
	for(i = 0;i < 2;i++){
			for(j = 0;j < 3;j++){
					//*ppArr = *(&arr) = arr
					printf("pArr[%d][%d] = %d \n",i,j,(*ppArr)[i][j]);
					printf("pArr[%d][%d] = %d \n",i,j,(*(*ppArr+i))[j]);
					printf("pArr[%d][%d] = %d \n",i,j,*(*(*ppArr+i)+j));
				}
		}
	return 0;
	}
